/**
 * 渠道功能使用示例
 * 
 * 这个文件展示了如何在项目的不同地方使用渠道功能
 */

import { ChannelUtils, getChannelName } from '@/utils/channel';
import { ChannelService } from '@/service/channel';

/**
 * 示例1: 在用户注册时上报渠道信息
 */
export async function exampleUserRegister(userInfo: any) {
    // 检查是否来自第三方渠道
    if (ChannelUtils.isFromThirdParty()) {
        // 上报用户注册信息（包含渠道信息）
        await ChannelService.reportUserRegister({
            ...userInfo,
            registerSource: 'third_party_channel'
        });
    }
}

/**
 * 示例2: 在页面访问时记录渠道信息
 */
export function examplePageAccess(pageName: string) {
    const channelInfo = ChannelUtils.getChannelInfo();
    
    // 记录页面访问日志
}

/**
 * 示例3: 根据渠道显示不同的内容
 */
export function exampleChannelSpecificContent() {
    const channelId = ChannelUtils.getChannelId();
    
    switch (channelId) {
        case '0773020':
            return {
                title: '欢迎来自第三方渠道1的用户',
                banner: 'special_banner_1.png',
                discount: '10%'
            };
        case '0773021':
            return {
                title: '欢迎来自第三方渠道2的用户',
                banner: 'special_banner_2.png',
                discount: '15%'
            };
        default:
            return {
                title: '欢迎使用我们的服务',
                banner: 'default_banner.png',
                discount: '5%'
            };
    }
}

/**
 * 示例4: 在订单创建时关联渠道信息
 */
export async function exampleOrderCreation(orderData: any) {
    const channelInfo = ChannelUtils.getChannelInfo();
    
    // 创建订单时包含渠道信息
    const orderWithChannel = {
        ...orderData,
        channelId: channelInfo.channelId,
        isFromThirdParty: channelInfo.isFromThirdParty,
        orderTime: Date.now()
    };
    
    // 这里可以调用订单创建API
    
    return orderWithChannel;
}

/**
 * 示例5: 渠道数据统计
 */
export async function exampleChannelAnalytics() {
    const channelInfo = ChannelUtils.getChannelInfo();
    
    // 收集用户行为数据
    const analyticsData = {
        event: 'user_action',
        channelId: channelInfo.channelId,
        isFromThirdParty: channelInfo.isFromThirdParty,
        timestamp: Date.now(),
        // 其他统计数据...
    };
    
    // 上报统计数据
    try {
        await ChannelService.reportChannelAccess();
    } catch (error) {
        // 统计数据上报失败
    }
}

/**
 * 示例6: 渠道配置获取
 */
export async function exampleGetChannelConfig() {
    const channelId = ChannelUtils.getChannelId();
    
    if (channelId) {
        try {
            const config = await ChannelService.getChannelConfig(channelId);
            return config;
        } catch (error) {
            return null;
        }
    }
    
    return null;
}

/**
 * 示例7: 渠道验证
 */
export async function exampleValidateChannel() {
    const channelId = ChannelUtils.getChannelId();
    
    if (channelId) {
        const isValid = await ChannelService.validateChannel(channelId);
        
        if (!isValid) {
            // 可以在这里处理无效渠道的逻辑
        }
        
        return isValid;
    }
    
    return true; // 没有渠道ID时默认有效
}

/**
 * 示例8: 根据渠道ID查询医院列表
 */
export async function exampleGetHospitalList() {
    try {
        // 获取第一页医院列表
        const hospitalList = await ChannelService.getHospitalListByChannel(1, 10);
        
        if (hospitalList) {
            // 处理医院数据
            hospitalList.records.forEach(hospital => {
                // 处理医院信息
            });
            
            return hospitalList;
        } else {
            return null;
        }
    } catch (error) {
        return null;
    }
}

/**
 * 示例9: 根据渠道ID和区域查询医院列表
 */
export async function exampleGetHospitalListByArea(area: string) {
    try {
        const hospitalList = await ChannelService.getHospitalListByChannelAndArea(area, 1, 10);
        
        if (hospitalList) {
            return hospitalList;
        } else {
            return null;
        }
    } catch (error) {
        return null;
    }
}

/**
 * 示例10: 获取渠道医院统计信息
 */
export async function exampleGetChannelHospitalStats() {
    try {
        const stats = await ChannelService.getChannelHospitalStats();
        
        if (stats) {
            return stats;
        } else {
            return null;
        }
    } catch (error) {
        return null;
    }
}

/**
 * 使用说明
 */
export const USAGE_GUIDE = `
渠道功能使用指南:

1. 基本使用:
   - 通过 URL 参数 qudaoid 传递渠道ID
   - 使用 ChannelUtils 获取渠道信息
   - 使用 ChannelService 进行数据上报

2. 在页面中使用:
   import { ChannelUtils } from '@/utils/channel';
   
   // 检查渠道
   if (ChannelUtils.isFromThirdParty()) {
       const channelId = ChannelUtils.getChannelId();
       // 处理渠道相关逻辑
   }

3. 数据上报:
   import { ChannelService } from '@/service/channel';
   
   // 上报访问信息
   await ChannelService.reportChannelAccess();
   
   // 上报用户注册
   await ChannelService.reportUserRegister(userInfo);

4. 渠道验证:
   const isValid = await ChannelService.validateChannel(channelId);
   if (!isValid) {
       // 处理无效渠道
   }

5. 医院列表查询:
   // 根据渠道ID查询医院列表
   const hospitalList = await ChannelService.getHospitalListByChannel(1, 10);
   
   // 根据渠道ID和区域查询医院列表
   const areaHospitalList = await ChannelService.getHospitalListByChannelAndArea('北京', 1, 10);
   
   // 获取渠道医院统计信息
   const stats = await ChannelService.getChannelHospitalStats();
 `;
